/**
播放器状态类
**/

typedef struct PlayerState {
	/**
	struct AVDictionary {  
	    int count;  
	   //可以把下面的结构看成一个动态数组
	    AVDictionaryEntry *elems;  
	};

	typedef struct AVDictionaryEntry {  
	    char *key;  
	    char *value;  
	} AVDictionaryEntry;
	*/
	AVDictionary *sws_dict;		//视频转码参数option
	AVDictionary *swr_dict;
	AVDictionary *format_opts;	//解复用参数
	AVDictionary *codec_opts;	//解码器参数
	AVDictionary *resample_opts;	//重新采样率参数

	const char* audioCodecName;	//指定音频解码器名称
	const char* videoCodecName;	//指定视频解码器名称

	int abortRequest;		//退出标志
	int pauseRequest;		//暂停标志
	SyncType syncType;		//同步类型
	int64_t startTime;		//开始时间
	int64_t duration;		//视频时长
	int realTime;			//判断是否是实时流
	int audioDisable;		//禁止音频流
	int videoDisable;		//禁止视频实时流
	int displayDisable;		//禁止显示

	int fast;			//解码上下文的AV_CODEC_FLAG2_FAST标志
	int genpts;			//解码上下文的AVFMT_FLAG_GENPTS标志 应该是GPU显示
	int lowres;			//解码上下文的lowres标志
	float playbackRate;		//播放速率
	float playbackPitch;		//播放音调

	int seekByBytes;		//是否以字节定位
	int seekRequest;		//定位请求
	int seekFlags;			//定位标志
	int64_t seekPos;		//定位位置
	int64_t seekRel;		//定位偏移

	int autoExit;			//自动退出
	int loop;			//循环播放
	int mute;			//静音播放
	int frameDrop;			//丢帧操作
}Playerstate;

inline void resetPlayerState(PlayerState *state){
	av_opt_free(state);

	av_dict_free(&state->sws_dict);
	av_dict_free(&state->swr_dict);
	av_dict_free(&state->format_opts);
	av_dict_free(&state->codec_opts);
	av_dict_free(&state->resample_opts);
	//0 表示新添加一个key-value
	av_dict_set(&state->sws_dict, "flags", "bicubic", 0);


}
